package com.bz.xtcx.manager.service;

import java.io.OutputStream;
import java.util.List;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.bz.xtcx.manager.entity.BusUser;
import com.bz.xtcx.manager.entity.BusUserCheck;
import com.bz.xtcx.manager.entity.BusUserForm;
import com.bz.xtcx.manager.vo.VoQuery;
import com.bz.xtcx.manager.vo.VoResponse;
import com.bz.xtcx.manager.vo.VoTaskSum;

public interface ILibService{
    
    BusUserForm getUserForm(int type);
    
    VoResponse setUserForm(BusUserForm form);
    
    /**
     * 用户 提交/更新 用户的资源库表格数据
     * @param detail
     * @return
     */
    VoResponse setUserDetail(String detail);
    
    /**
     * 管理员 添加/更新 资源库信息
     * @param form
     * @return
     */
    VoResponse addLib(BusUserForm form);

    /**
     * 管理员 批量添加/更新 资源库信息
     * @param updDatas 待更新数据
     * @param userType 类别
     * @return
     */
    VoResponse addLibBatch(JSONArray updDatas, int userType);
    
    /**
     * 管理员 删除 资源库信息
     * @param id
     * @param type
     * @return
     */
    VoResponse delLib(String id, String type);
    
    /**
     * 管理员 删除 表格信息
     * @param id
     * @return
     */
    VoResponse delForm(String id);
    
    /**
     * 根据用户类别、名称和证件号查找资源库中是否存在对应的信息
     * @param userType
     * @param name
     * @param code
     * @return
     */
    Object getLibsByUser(int userType, String name, String code);
    
    /**
     * 获取用户是否存在资源库中信息
     * @return
     */
    VoResponse getLibsByUser();
    
    BusUser getUserDetailById(String userId);
    
//    BusUserForm getUserDetail(boolean isDraft);
    VoResponse getUserDetail(boolean isDraft);
    
    /**
     * 用户保存表格草稿
     * @param form
     * @return
     */
    int saveFormHis(String form);
    
    /**
     * 驳回
     * @param id
     * @param info
     * @return
     */
    VoResponse rejectUserDetail(String id, String info);
    
    List<BusUserCheck> getCheckInfo(String formId);
    
    /**
     * 审核用户完善的信息，并保存到资源库
     * @param id
     * @return
     */
    VoResponse checkUserDetail(String id);
    
    VoResponse checkUserDetail(List<String> ids);
    
    /**
     * 修改资源库信息状态
     * @param id
     * @param type
     * @param status
     * @return
     */
    VoResponse updateLibStatus(String id, int type, int status);
    
    /**
     * 修改资源库信用等级
     * @param id
     * @param type
     * @param creditLevel
     * @return
     */
    VoResponse updateLibCreditLevel(String id, int type, int creditLevel);
    
    /**
     * 批量下架
     * @param ids
     * @param type
     * @return
     */
    VoResponse offUserDetail(List<String> ids, int type);
    
    VoResponse getExpertPageByCondition(VoQuery lib, int pageNum, int pageSize, String orderBy);
    
    VoResponse getCollegePageByCondition(VoQuery lib, int pageNum, int pageSize, String orderBy);
    
    VoResponse getEnterprisePageByCondition(VoQuery lib, int pageNum, int pageSize, String orderBy);
    
    VoResponse getServicePageByCondition(VoQuery lib, int pageNum, int pageSize, String orderBy);
    
    VoResponse getResultsPageByCondition(VoQuery lib, int pageNum, int pageSize, String orderBy);
    
    VoResponse getRequirementPageByCondition(VoQuery lib, int pageNum, int pageSize, String orderBy);
    
    /**
     * 获取资源库待办任务
     * @return
     */
    List<VoTaskSum> taskDoing();
    
    /**
     * 获取待办任务汇总数据
     * @return
     */
    List<VoTaskSum> taskDoingSum();

    List<VoTaskSum> taskDjFromerDoingSum();

    List<VoTaskSum> taskDjTargeterDoingSum();

    VoResponse publishRe( BusUserForm form);
    
    VoResponse exportLib(VoQuery lib, OutputStream out);

    VoResponse vaiidate(BusUserForm e, JSONObject json);
}
